package com.guigu.eduservice.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 检测报告表（存储设备检测的结果及结论）
 * </p>
 *
 * @author janecraft
 * @since 2025-09-27
 */
@TableName("detection_report")
@Data
public class DetectionReport implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 报告唯一标识
     */
    @TableId(value = "report_id", type = IdType.AUTO)
    private Long reportId;

    /**
     * 关联设备表equipment_id（唯一，一个设备仅一份检测报告）
     */
    private Long equipmentId;

    /**
     * 关联业务员表businessman_id（执行检测的评估师）
     */
    private Long businessmanId;

    /**
     * 检测时间（评估师现场检测的时间）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime detectionTime;

    /**
     * 外观检测结果（正常/异常，异常需说明，如"右侧履带磨损严重"）
     */
    private String appearanceDetection;

    /**
     * 部件功能检测结果（正常/异常，异常需说明，如"液压泵漏油"）
     */
    private String componentFunctionDetection;

    /**
     * 性能参数检测结果（正常/异常，异常需说明，如"最大起重量不达标"）
     */
    private String performanceParameterDetection;

    /**
     * 检测结论（综合判断设备是否符合交易标准，如"设备整体状况良好，可正常交易"）
     */
    private String detectionConclusion;

    /**
     * 报告审核状态（0-待审核，1-审核通过，2-审核不通过）
     */
    private Integer auditStatus;

    /**
     * 审核时间（报告状态变更为1或2时记录）
     */
    private LocalDateTime auditTime;

    /**
     * 审核备注（审核不通过时填写原因，如"检测项缺失"）
     */
    private String auditRemark;

    /**
     * 记录创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    /**
     * 记录更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updateTime;
    @TableField(exist = false)
    private List<DetectionReportImage> detectionReportImages;
    // 关联对象（非数据库字段）
    @TableField(exist = false)
    private Equipment equipment; // 关联设备信息
    @TableField(exist = false)
    private Businessman businessman; // 关联评估师信息
}
